package com.turing.post.capitalaccounts.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 银行帐户入账流水business接口
 * 
 * @author liun
 * @date 2013-05-29
 */
@Remote
@Local
public interface BankAccountDetailBusiness {

	/**
	 * 根据id获取银行账户入账流水
	 * 
	 * @param bankAccDetailId
	 *            银行账户入账流水ID
	 * @return
	 */
	public BankAccountDetail getBankAccountDetailByID(BigInteger bankAccDetailId);

	/**
	 * 根据银行账户ID获取银行账户入账流水
	 * 
	 * @param webInput
	 * @param accountNo
	 * @param bankAccSeqNo
	 * @param startDate
	 * @param endDate
	 * @param voucherNo
	 * @param startAmount
	 * @param endAmount
	 * @param page
	 * @return
	 */
	public List<BankAccountDetail> getBankAccountDetailByAccID(
			PCPSWebInput webInput, BigInteger accountNoId, String status,
			Date startDate, Date endDate, String voucherNo,
			BigInteger startAmount, BigInteger endAmount,
			BigInteger createBranchNo, String isSingle, String paidType, String lenghtSection, Integer page)
			throws CapitalApplicationException;

	/**
	 * 获取银行账户入账流水总数
	 * 
	 * @param webInput
	 * @param accountNo
	 * @param bankAccSeqNo
	 * @param startDate
	 * @param endDate
	 * @param voucherNo
	 * @param startAmount
	 * @param endAmount
	 * @return
	 */
	public Integer getBankAccountDetailByAccIDTotal(PCPSWebInput webInput,
			BigInteger accountNoId, String status, Date startDate,
			Date endDate, String voucherNo, BigInteger startAmount,
			BigInteger endAmount, BigInteger createBranchNo, String isSingle, String paidType, String lenghtSection)
			throws CapitalApplicationException;

	/**
	 * 添加一条银行账户入账流水明细
	 * 
	 * @param entity
	 */
	public void addBankAccountDetail(PCPSWebInput webInput,
			BankAccountDetail entity) throws PCPSApplicationException;

	/**
	 * 根据ID删除一条银行账户入账流水明细
	 * 
	 * @param entity
	 */
	public void delBankAccountDetail(PCPSWebInput webInput,
			BankAccountDetail entity) throws PCPSApplicationException;

	/**
	 * 修改一条银行账户入账流水明细
	 * 
	 * @param entity
	 * @throws PCPSApplicationException
	 */
	public void modifyBankAccountDetail(PCPSWebInput webInput,
			BankAccountDetail entity) throws PCPSApplicationException;

	/**
	 * 审核
	 * 
	 * @param webInput
	 * @param bad
	 * @throws PCPSApplicationException
	 */
	public void authBankAccountDetail(PCPSWebInput webInput,
			BigInteger importFileId) throws PCPSApplicationException;
	
	/**
	 * 手动审核
	 * @param webInput
	 * @param entity
	 * @throws PCPSApplicationException
	 */
	public void manuallyAuthBankAccountDetail(PCPSWebInput webInput, BankAccountDetail entity) throws PCPSApplicationException;
}
